package com.interview.javabase.aggregate.list;

import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @description: list做删除操作时候需要注意的事项 需要注意就是不管新增还是添加都需要同增 同减
 * @author: zhangshuguang@zhangshuguang.com
 * @date: 2019/05/21 09:22
 */
@SpringBootTest
public class Demo1 {

    /**
     * 解决方案一
     */
    @Test
    public void list1() {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        for (int i = 0; i < list.size(); i++) {
            list.remove(i);
            i--;
        }

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

    /**
     * 解决方案二
     */
    @Test
    public void list2() {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            iterator.remove();
            iterator.next();
        }

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

    /**
     * 问题
     */
    @Test
    public void list3() {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        for (int i = 0; i < list.size(); i++) {
            list.remove(i);
        }

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}
